1.           ПРОСТЫЕ ТИПЫ ДАННЫХ В JAVA

http://articles.org.ru/docum/java/gl1/gl1-2.jpg

1.1. ЦЕЛЫЕ ТИПЫ

Тип

Размер (бит) битах

Минимальное значение

Максимальное значение

byte

8

-128

127

short

16

-32768

32767

int

32

-2147483648

2147483647

long

64

-922372036854775808

922372036854775807

byte b1 = 50, b2 = -99, bЗ;

byte a1 = 0xF1, a2 = 0x07;

short det = 0, ind = 1;

int i = -100, j = 100, k = 9999;

long big = 50;

Оператор

Название

Пример

Примечание

+

Оператор сложения

i+j

В случае, когда операнды i и j имеют разные типы или типы byte, shortили char, действуют правила автоматического преобразования типов.

Оператор вычитания

i-j

*

Оператор умножения

i*j

/

Оператор деления

i/j

Результат округляется до целого путем отбрасывания дробной части как для положительных, так и для отрицательных чисел.

%

Оператор остатка от целочисленного деления

i%j

Возвращается остаток от целочисленного деления

=

Оператор присваивания

v=i

Сначала вычисляется выражение i, после чего полученный результат копируется в ячейку v

++

Оператор инкремента(увеличения на 1)

v++

v++ эквивалентно v=v+1

--

Оператор декремента(уменьшения на 1)

v--

v-- эквивалентно v=v-1

+=

v+=i

v+=i эквивалентно v=v+i

-=

v-=i

v-=i эквивалентно v=v-i

*=

v*=i

v*=i эквивалентно v=v*i

/=

v/=i

v/=i эквивалентно v=v/i

%=

v%=i

v%=i эквивалентно v=v%i

1.2. СИМВОЛЬНЫЙ ТИП

Тип

Размер (бит) битах

Минимальное значение

Максимальное значение

char

16

0

65536

char c1 = 'A', c2 = '?', newLine = '\n';

char s2 = '\u0042';

Escape-последовательность

Функция

Значение вUnicode

\b

Забой (backspace)

\u0008

\t

Горизонтальная табуляция (horizontaltab)

\u0009

\n

Перевод строки (linefeed)

\u000A

\f

Перевод страницы (form feed)

\u000C

\r

Возврат каретки (carriage return)

\u000D

\"

Двойная кавычка (double quote)

\u0022

\'

Апостроф (single quote)

\u0027

\\

Обратная косая черта (backslash)

\u005C

1.3. ВЕЩЕСТВЕННЫЕ ТИПЫ

Тип

Разрядность (бит)

Диапазон

Точность

float

32

3,4e-38 < |x| < 3,4e38

7-8 цифр

double

64

1,7e-308 < |x| < 1,7e308

17 цифр

float х = 0.001, у = -34.789;

double 21 = -16.2305, z2;

float x1 = 3.5f, x2 = 3.7E6f, x3 = -1.8E-7f;

Оператор

Название

Пример

Примечание

+

Оператор сложения

x+y

В случае, когда операнды x и y имеют разные типы, действуют правила автоматического преобразования типов.

Оператор вычитания

x-y

*

Оператор умножения

x*y

/

Оператор деления

x/y

Результат является вещественным. В случае, когда операнды x и y имеют разные типы, действуют правила автоматического преобразования типов.

%

Оператор остатка от целочисленного деления

x%y

Возвращается остаток от целочисленного деления x на y. В случае, когда операнды x и y имеют разные типы, действуют правила автоматического преобразования типов.

=

Оператор присваивания

v=x

Сначала вычисляется выражение x, после чего полученный результат копируется в ячейку v

++

Оператор инкремента(увеличения на 1)

v++

эквивалентно v=v+1

--

Оператор декремента(уменьшения на 1)

v--

эквивалентно v=v-1

+=

v+=x

эквивалентно v=v+x

-=

v-=x

эквивалентно v=v-x

*=

v*=x

эквивалентно v=v*x

/=

v/=x

эквивалентно v=v/x

%=

v%=x

эквивалентно v=v%x

Математические функции, а также константы "пи" (Math.PI) и "е" (Math.E) заданы в классе Math, находящемся в пакете java.lang.

Для того, чтобы их использовать, надо указывать имя функции или константы, квалифицированное впереди именем класса Math.

Оператор класса Math

Примечание

Тригонометрические и обратные тригонометрические функции

sin(x)

sin(x) - синус

cos(x)

cos(x) - косинус

tan(x)

tg(x) - тангенс

asin(x)

arcsin(x) - арксинус

acos(x)

arccos(x) - арккосинус

atan(x)

arctg(x) - арктангенс

atan2(y, x)

Возвращает угол, соответствующий точке с координатами x,y, лежащий в пределах (-\pi,\pi].

toRadians(angdeg)

angdeg / 180.0 * PI; - перевод углов из градусов в радианы.

toDegrees(angrad)

angrad * 180.0 / PI; - перевод углов из радиан в градусы.

Степени, экспоненты, логарифмы

exp(x)

e^xэкспонента

expm1(x)

e^x-1. При x, близком к 0, дает гораздо более точные значения, чем exp(x)-1

log(x)

ln(x) – натуральный логарифм.

log10(x)

\log_{10}(x)– десятичный логарифм.

log1p(x)

\ln(1+x). При x, близком к 0, дает гораздо более точные значения, чем \log(1+x)

sqrt(x)

\sqrt{}- квадратный корень

cbrt(x)

\sqrt[3]{}- кубический корень

hypot(x,y)

\sqrt{x^2+y^2}- вычисление длины гипотенузы по двум катетам

pow(x, y)

x^y– возведение x в степень y

sinh(x)

\sh(x)=\frac{e^x-e^{-x}}{2}– гиперболический синус

cosh(x)

\ch(x)=\frac{e^x+e^{-x}}{2}– гиперболический косинус

tanh(x)

\th(x)=\frac{e^x-e^{-x}}{e^x+e^{-x}}– гиперболический тангенс

Модуль, знак, минимальное, максимальное число

abs(m)

abs(x)

Абсолютное значение числа. Аргумент типа int, long, float или double. Результат того же типа, что аргумент.

signum(a)

signum(x)

Знак числа. Аргумент типа float или double. Результат того же типа, что аргумент.

min(m,n)

min(x,y)

Минимальное из двух чисел. Аргументы одного типа. Возможны типы: int, long, float, double. Результат того же типа, что аргумент.

max(m,n)

max(x,y)

Максимальное из двух чисел. Аргументы одного типа. Возможны типы: int, long, float, double. Результат того же типа, что аргумент.

Округления

ceil(x)

Ближайшее к x целое, большее или равное x

floor(x)

Ближайшее к x целое, меньшее или равное x

round(a)

round(x)

Ближайшее к x целое. Аргумент типа float или double. Результат типа long, если аргументdouble, и типа int – если float. То же, что (int)floor(x + 0.5).

rint(x)

Ближайшее к x целое.

ulp(a)

ulp(x)

Расстояние до ближайшего большего чем аргумент значения того же типа ("дискретность" изменения чисел в формате с плавающей точкой вблизи данного значения). Аргумент типа float или double. Результат того же типа, что аргумент.

Случайное число, остаток

random()

Псевдослучайное число в диапазоне от 0.0 до 1.0. При этом 0\le\text{Math.random()}<1

IEEEremainder(x,y)

Остаток от целочисленного деления x/y, то есть x-y*n, где n – результат целочисленного деления

1.4. БУЛЕВСКИЙ (ЛОГИЧЕСКИЙ) ТИП

boolean a, b;

a=true; b=a; c=false;

Оператор

Название

Пример

&&

логическое "И" ( and )

a&&b

||

логическое "ИЛИ" ( or )

a||b

^

логическое "исключающее ИЛИ" ( xor )

a^b

!

логическое "НЕ" ( not )

!a

==

равно

a==b

!=

не равно

a!=b

> 

больше

a>b

< 

меньше

a<b

>=

больше или равно

a>=b

<=

меньше или равно

a<=b

 

  

 2. УПРАВЛЯЮЩИЕ КОНСТРУКЦИИ В JAVA

 

Определение управляющих конструкций в Java практически во всём совпадает с C++.

2.1. Условные конструкции if … else

Наиболее распространённой формой управляющих структур является конструкция if … else, синтаксис которой выглядит следующим образом:

if (БулевскоеВыражение) {
     Инструкции1;
} else {
     Инструкции2;
}

Сначала осуществляется проверка значения булевского выражения. Если результат равен true, выполняется блок Инструкции1, в противном случае (и при наличии предложения else) – блок Инструкции2. Предложение else может быть пропущено, при этом конструкция if … else принимает более краткий вид:

if (БулевскоеВыражение) {
     Инструкции;
}
        int m = 4;
        if (m == 4) {
            System.out.println("April");
        }

run:

April

В этом случае при ложном значении булевского выражения никаких операций не выполняется. Возможна также и вложенность конструкций if … else:

if (БулевскоеВыражение1) {
     Инструкции1
} else if (БулевскоеВыражение2) {
     Инструкции2
} else {
     Инструкции3
}
        int month = 4;
        String season;
        if (month == 12 || month == 1 || month == 2) {
            season = "Winter";
        } else if (month == 3 || month == 4 || month == 5) {
            season = "Spring";
        } else if (month == 6 || month == 7 || month == 8) {
            season = "Summer";
        } else if (month == 9 || month == 10 || month == 11) {
            season = "Autumn";
        } else {
            season = "Bogus Month";
        }
        System.out.println("April is in the " + season + ".");

run:

April is in the Spring.

Некоторым аналогом конструкции if … else является операция «?» со следующим синтаксисом:

БулевскоеВыражение ? Значение1 : Значение2

где Значение1, Значение2 – вычисляемые значения одного типа.

Результатом этой операции будет Значение1, если БулевскоеВыражение истинно, в противном случае – Значение2

        int m = 4; String season;
        season = m == 4 ? "April" : "???";
        System.out.println(season);

run:

April

2.2. Условные конструкции switch – case

Конструкция switch позволяет передавать управление тому или иному блоку кода, обозначенному оператором case  в зависимости от значения выражения:

switch (Выражение) {
     case Значение1: 
         Инструкции;
     case Значение2: 
         Инструкции;
     ...
     default: 
         Инструкции;
}

Значение Выражения может иметь один из типов: byte, short, int, char. Каждому оператору case ставится в соответствие константа-значение. Если значение выражения совпадает со значением оператора case, то управление передаётся первой инструкции данного блока case. Для выхода из конструкции после завершения инструкций блока используется команда break. Если не прервать исполнение командой break, то будет исполняться блок инструкций, соответствующий следующему значению. Если значение выражения не совпало ни с одним из значений операторов case, то выполняется первая инструкция блока default. Если же метка default отсутствует, выполнение оператора switch завершается.

        int month = 4;
        String season;
        switch (month) {
            case 12:
            case 1:
            case 2:
                season = "зима"; break;
            case 3:
            case 4:
            case 5:
                season = "весна"; break;
            case 6:
            case 7:
            case 8:
                season = "лето";  break;
            case 9:
            case 10:
            case 11:
                season = "осень"; break;
            default:
                season = "Нет такого месяца";
        }
        System.out.println("Апрель - это " + season + ".");

run:

Апрель - это весна.

2.3 Циклы for

Выражение for применяется для организации циклического перехода по значениям из заданного диапазона и в общем виде выглядит так:

for (СекцияИнициализации; БулевскоеВыражение; Секция изменения) Инструкция;

Обработка цикла происходит в следующем порядке:

-         инициализация;

-         проверка условия завершения;

-         исполнение тела цикла;

-         инкрементация счётчика.

Все секции заголовка цикла for являются необязательными. Если СекцияИнициализации опускается, на её месте остаётся только символ точки с запятой. Если же из заголовка исключается БулевскоеВыражение, в качестве значения логического условия подразумевается литерал true. Исключение всех трёх секций приводит к тому, что цикл становится «бесконечным»: 

for (;;) {
    Инструкции;
}
        for (int i = 1; i <= 10; i++) {
            System.out.println("i = " + i);
        }

run:

i = 1

i = 2

i = 3

i = 4

i = 5

i = 6

i = 7

i = 8

i = 9

i = 10

        for (int n = 10; n > 0; n--) {
            System.out.println("n= " + n);
        }

run:

n= 10

n= 9

n= 8

n= 7

n= 6

n= 5

n= 4

n= 3

n= 2

n= 1

        int a, b;
        for (a = 1, b = 4; a < b; a++, b--) {
            System.out.println("a = " + a);
            System.out.println("b = " + b);
        }

run:

a = 1

b = 4

a = 2

b = 3

2.4 Циклы while

Синтаксис циклической конструкции while выглядит так:

while (БулевскоеВыражение)
Инструкция;
        int n = 5;
        while (n > 0) {
            System.out.println("while " + n);
            n--;
        }

run:

while 5

while 4

while 3

while 2

while 1

Сначала осуществляется проверка булевского выражения. Если результат равен true, выполняется Инструкция (в качестве инструкции может быть использован блок), после чего булевское выражение проверяется вновь, и процесс повторяется до тех пор, пока в результате проверки не будет получено значение false.

2.5 Циклы do … while

Если требуется исполнить тело цикла хотя бы 1 раз, используется конструкция do … while:

do
while (БулевскоеВыражение)
        int n = 5;
        do {
            System.out.println("do-while " + n);
        } while (--n > 0);

run:

do-while 5

do-while 4

do-while 3

do-while 2

do-while 1

В этом случае проверка истинности логического выражения осуществляется после выполнения тела цикла.

В теле циклов возможно использовать две особые инструкции:

break – применяется для завершения выполнения цикла;

continue – передаёт управление в конец тела цикла (т.е. начинает следующую итерацию). В ситуациях с while и do это приводит к выполнению проверки условия цикла, а при использовании в теле for инструкция continue производит передачу управления секции изменения значения переменных цикла.

2.6 Метки

В Java отсутствует оператор goto. Но хотя программирование с применением goto и считается плохим тоном, существуют задачи, в которых его использование очень удобно. Основным примером такой ситуации является совершение выхода одновременно из двух вложенных циклов.

Эта проблема решается в Java использованием меток. Любая инструкция в программе может быть снабжена меткой, которая представляет собой содержательное имя, позволяющее сослаться на соответствующую инструкцию.

метка: инструкция

Несмотря на то, что меткой может быть установлена перед любой инструкцией, на практике имеет смысл применять метки только перед циклическими конструкциями for, while, do, условными конструкциями if, switch и блоками {}. Чтобы «выбраться» из вложенного цикла или блока, достаточно снабдить меткой соответствующий внешний блок и указать её в команде break, которая передаёт управление первой инструкции, следующей за блоком.

Примеры:

http://www.amse.ru/courses/oopjava/04/01.gif

В данном случае break осуществит выход сразу из двух циклов.

Ещё один пример выхода из сложной конструкции:

http://www.amse.ru/courses/oopjava/04/02.gif

        boolean t = true;
        a:
        {
            b:
            {
                c:
                {
                    System.out.println("До break");
                    if (t) {
                        break b;
                    }
                    System.out.println("He будет выполнено ");
                }
                System.out.println("He будет выполнено ");
            }
            System.out.println("После break");
        }

run:

До break

После break

2.7 Выход из методов (процедур)

В Java для реализации выхода из методов (процедур) используется метод return, который приведет к немедленному завершению работы и передаче управления коду, вызвавшему этот метод. Ниже приведен пример, иллюстрирующий использование оператора return:

        boolean t = true;
        System.out.println("До return");
        if (t) { return; }
        System.out.println("Этo не будет выполнено ");

run:

До return

Для выхода из программы используется метод System.exit(КодОшибки). Если программа заканчивается нормально, то КодОшибки должен быть 0:

 System.exit(0);